#!/bin/bash

# check_passwordless_sudo.sh
# 功能说明:
# 1. 检查一个或多个用户是否配置了免密码执行 sudo 的权限。
# 2. 支持通过命令行传入用户名列表，如果未传入参数，则默认检查当前用户。
# 3. 输出检查结果，包括是否配置了免密码 sudo 以及配置的来源（/etc/sudoers 或 /etc/sudoers.d/）。
# 4. 验证用户是否存在于系统中，避免检查不存在的用户。

check_passwordless_sudo() {
  local user="$1"
  local sudoers_file="/etc/sudoers.d/$user"

  echo "Checking passwordless sudo configuration for user: $user"

  # 检查 /etc/sudoers 文件
  if sudo grep -q "$user ALL=(ALL) NOPASSWD: ALL" /etc/sudoers; then
    echo "Passwordless sudo is configured for $user in /etc/sudoers"
  elif [[ -f "$sudoers_file" ]] && sudo grep -q "$user ALL=(ALL) NOPASSWD: ALL" "$sudoers_file"; then
    echo "Passwordless sudo is configured for $user in $sudoers_file"
  else
    echo "No passwordless sudo configuration found for $user"
    return 1
  fi

  return 0
}

main() {
  # 如果没有传入用户名，则默认使用当前用户
  if [[ $# -eq 0 ]]; then
    echo "No usernames provided. Defaulting to the current user: $USER"
    check_passwordless_sudo "$USER"
  else
    # 遍历所有传入的用户名
    for user in "$@"; do
      if id "$user" &>/dev/null; then
        check_passwordless_sudo "$user"
      else
        echo "User $user does not exist on this system."
      fi
    done
  fi
}

# 运行主函数
main "$@"

